﻿using System;

namespace Lesson_封装_成员变量与访问修饰符
{
    #region 一 成员变量
    //申明在类语句块中
    //用来描述对象的特征
    //可以是任意变量类型
    //数量不做限制
    //是否赋值根据需求定
    class Person
    {
        //特征——成员变量
        //在结构体中 成员变量在申明时不可初始化
        //在类中 成员变量可根据需要初始化
        //如某些该类对象共有且相同 但需要被使用的变量 
        //在结构体中 成员变量类型名不能与当前结构体名相同
        //在类中 成员变量类型名可以与当前类名相同 但不能进行实例化(可赋null)

        //姓名
        public string name;
        //年龄
        public int age;
        //性别
        public E_SexType sex;
        //伴侣
        public Person partner;     //不能实例化
        //朋友
        public Person[] friecds;
        //宠物
        Pet pet;
        //位置
        Position pos;
    }
    enum E_SexType
    {
        male,
        female,
    }
    class Pet
    {
        
    }
    struct Position
    {

    }
    #endregion

    #region 访问修饰符
    //public 公共的 内部外部都能访问
    //private 私有的 仅内部访问
    //protected 保护的 内部和子类可访问
    #endregion
    class Program
    {
        static void Main(string[] args)
        {
            //调用默认的构造函数 成员变量获得默认初始值
            Person p1 = new Person();
            //查看数据类型的默认值
            Console.WriteLine(default(string));
            Console.WriteLine(default(char));
            Console.WriteLine(default(bool));
            Console.WriteLine(default(int));
            Console.WriteLine(default(float));
            Console.WriteLine(default(double));
        }
    }
}
//字段（Field）是类、结构体或枚举中定义的一个变量。
//字段是类型的一个成员，用于存储与该类型相关联的数据。
//字段可以是任何类型，包括基本类型（如int、float、char等）、引用类型（如类、接口、数组等）、值类型（如结构体、枚举等）或指针类型（在unsafe上下文中）